home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
DB_CLIPP
/
2510.ZIP
/
TRSOURCE.EXE
/
CURDIR.ASM
< prev
next >
Wrap
Assembly Source File
|
1990-10-22
|
3KB
|
115 lines
; CURDIR.ASM
;
; by Leonard Zerman
;
; Placed in the public domain by Tom Rettig Associates, 10/22/1990.
;
;---------------------------------------------------------------
; SYNTAX: memvar = CURDIR( [<drive>] )
;
; RETURNS: Current disk directory on specified drive,
; or default drive if no drive is specified.
;---------------------------------------------------------------
;
INCLUDE EXTENDA.INC
DATASEG
CLpublic <CURDIR>
CLstatic <byte DRIVEBUFF ' :\' 65 DUP (0)>
CLstatic <byte NULLSTR 0>
CLstatic <cptr OLD_INT24>
CLfunc char CURDIR <char DRIVE>
CLcode
PUSH DS ; Save caller's DS
PUSH ES
MOV AL,24H
DOSREQ 35H ; GET INT 24 vector.
MOV SI,OFFSET OLD_INT24
MOV [SI],BX
MOV [SI+2],ES
PUSH DS
MOV AX,CS
MOV DS,AX
MOV DX,OFFSET NEW_INT24-CODESEG
MOV AL,24H
DOSREQ 25H ; SET INT 24 vector.
POP DS
XOR DL,DL ; assume no parm
CMP PCOUNT,1
JG ERROR
JL CURDIR1
TESTNUL DRIVE
JZ CURDIR1
LES DI,DRIVE
XOR DL,DL ; assume no parm
MOV DL,BYTE PTR ES:[DI]
AND DL,0DFH ; Force to upper case
SUB DL,'A'-1 ; Convert to numeric code (A=1, etc.)
CURDIR1:
MOV SI,OFFSET DRIVEBUFF
MOV AX,SEG DRIVEBUFF
MOV DS,AX
CMP DL,0
JNE CURDIR1A
DOSREQ 19H ; Get current drive
ADD AL,'A' ; Convert to ASCII
MOV DS:[SI],AL
JMP SHORT CURDIR1B
CURDIR1A:
MOV DS:[SI],DL ; Store drive number in
; CUR_DRIVE
ADD BYTE PTR DS:[SI],'A'-1 ; Convert to ASCII
CURDIR1B:
MOV SI,OFFSET DRIVEBUFF+3
MOV AX,SEG DRIVEBUFF
MOV DS,AX
DOSREQ 47H ; Get directory
JNC CURDIR2
ERROR:
MOV DI,OFFSET NULLSTR
MOV AX,SEG NULLSTR
MOV ES,AX
JMP SHORT EXIT
CURDIR2:
MOV DI,OFFSET DRIVEBUFF
MOV AX,SEG DRIVEBUFF
MOV ES,AX
EXIT:
PUSH ES
PUSH DI
MOV DX, SEG OLD_INT24
MOV DS,DX
MOV DX,WORD PTR OLD_INT24
MOV AX,WORD PTR OLD_INT24[2]
MOV DS,AX
MOV AL,24H
DOSREQ 25H ;set old vector
POP AX
POP DX
POP ES
POP DS
CLret DX,AX
;--------------------------------------
WORKFUNCS
NEW_INT24 PROC FAR
IRET
NEW_INT24 ENDP
ENDWORK
;--------------------------------------
;**************************************
END